package demo1;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class Demo {
    public static void main(String[] args) throws Exception {
        /*
        静态调用
        优点:代码编写简单
        缺点:代码写死，增加后期维护成本
         */
        Person person=new Person();
        person.sayHello();

        /*
        反射机制
        优点:可以动态调用，避免将代码写死
        缺点:编写大量的反射代码
         */
        Class cls=Class.forName("demo1.Person");
        Object obj=cls.newInstance();
        Method m=cls.getMethod("sayHello");
        m.invoke(obj);

        /*
        通过Spring容器管理对象，并从中获取我们需要使用的对象
         */
        AnnotationConfigApplicationContext context
                =new AnnotationConfigApplicationContext("demo1");
        Person person1=context.getBean(Person.class);
        person1.sayHello();
    }
}
